package net.xo68.destiny.contract.api;

import net.xo68.destiny.contract.domain.RespondResult;
import net.xo68.destiny.contract.domain.StringRespondResult;
import net.xo68.destiny.contract.domain.job.AbortParameter;
import net.xo68.destiny.contract.domain.job.TriggerParameter;
import net.xo68.destiny.contract.domain.logger.LoggerInfo;
import net.xo68.destiny.contract.domain.node.NodeRegistry;

import java.util.List;

/**
 * 工作节点接口
 * @author wuxie
 * @version 2020-10-26
 */
public interface WorkerApi {


    /**
     * 节点信息
     * @param workGroupName
     * @return
     */
    RespondResult<List<NodeRegistry>> discovery(String workGroupName);

    /**
     * 接收服务端下发的任务
     * @param triggerParameter 触发器参数
     * @return
     */
    StringRespondResult receive(TriggerParameter triggerParameter);

    /**
     * 读取任务实例执行日志
     * @param instanceId
     * @return
     */
    LoggerInfo readLogger(long instanceId,int beginLine);

    /**
     * 终止或取消任务实例
     * @param abortParameter
     * @return
     */
    StringRespondResult abort(AbortParameter abortParameter);
}
